home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1994 November / macformat-018.iso / Utility Spectacular / Developer / macgzip_022-src / macos / Posix / ThinkCPosix Sources / utime.c < prev   
Encoding:
C/C++ Source or Header  |  1994-07-26  |  989 b   |  49 lines  |  [TEXT/MPS ]

  1. /* $Id: $ */
  2.  
  3.  
  4. /*
  5.  * Original from ThinkCPosix by Timothy Murphy <tim@maths.tcd.ie>,
  6.  * Trinity College Dublin
  7.  *
  8.  * Modified by SPDsoft <macspd@ivo.cps.unizar.es> to use Unix dates
  9.  * seconds from Mac 'Fri Jan  1 00:00:00 1904' to
  10.  * Un*x 'Thu Jan  1 00:00:00 1970':                    2082844800
  11.  */
  12.  
  13. #define    U2MSEC    2082844800
  14.  
  15. #include "ThinkCPosix.h"
  16.  
  17. int utime (char *filename,struct utimbuf *times)
  18. {
  19.     CInfoPBRec cipbr;
  20.     HFileInfo *fpb = (HFileInfo*)&cipbr;
  21.     DirInfo *dpb = (DirInfo*)&cipbr;
  22.     unsigned char pname[256];
  23.     short err;
  24.  
  25.     strcpy((char*)pname, filename);
  26.     c2pstr(pname);
  27.  
  28.     dpb->ioDrDirID = 0L;
  29.     fpb->ioNamePtr = pname;
  30.     fpb->ioVRefNum = 0;
  31.     fpb->ioFDirIndex = 0;
  32.     fpb->ioFVersNum = 0;
  33.     err = PBGetCatInfo(&cipbr, FALSE);
  34.     if (err != noErr) {
  35.         errno = ENOENT;
  36.         return -1;
  37.     }
  38.     dpb->ioDrDirID = 0L;
  39.     fpb->ioFlMdDat = times->modtime + U2MSEC;
  40.     fpb->ioFlCrDat = times->actime + U2MSEC;
  41.     err = PBSetCatInfo(&cipbr, FALSE);
  42.     if (err != noErr) {
  43.         errno = EACCES;
  44.         return -1;
  45.     }
  46.     return 0;
  47. }
  48.  
  49.